home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 2
/
SPACE - Library 2 - Volume 1.iso
/
program
/
331
/
gemfsc14
/
aessrc14
/
gemfast.h
< prev
next >
Wrap
C/C++ Source or Header
|
1990-07-20
|
14KB
|
500 lines
/* tab expansion/compression should be set to 4 */
/**************************************************************************
*
* GEMFAST.H - Header file for common VDI and AES symbols.
*
* This header file contains items compatible with both GEMDEFS and OBDEFS
* from the Alcyon system. Note that there are no 'extern' definitions
* for the GEM functions, because they all return a signed int and work
* fine as autodefined functions.
*
* If you have a lot of source already coded for #include <gemdefs.h>,
* you can create a dummy (empty) obdefs.h file, and code a new gemdefs.h
* file which contains only #include <gemfast.h>. YOU CAN NO LONGER USE
* GEMDEFS AND OBDEFS WITH THE GEMFAST BINDINGS! For the bindings libs
* to work correctly, this header file must be used.
*
* Credits dept:
* This file bears an amazing similarity to the original Alcyon GEMDEFS
* and OBDEFS header files, which are copyrighted by Atari. What can I
* say? Copyrighted or not, these are the names and values that every-
* body uses, so OF COURSE the files look *awful* similar...
*
* Maintenance:
* 12/03/89 - v1.3
* > Renamed a lot of functions, a name compatibility block was
* added at the end of this file to smooth the transition.
* > Added NO_OBJECT, MU_MENTRY, MU_MEXIT to defines.
* > Added XMULTI struct, even though it really belongs to v2.0
* 05/26/90 - v1.4
* > Added RSHDR structure for imbedded resource support.
* > Fixed all structures which defined pointers as 'long'...
* - ICONBLK ib_pmask, ib_pdata, ib_ptext
* - BITBLK bi_pdata
* - USERBLK ub_code
* - PARMBLK pb_tree
* All of these structure elements now define the proper ptr.
* > Added AESUTIL_A, AESFAST_A and VDIFAST_A symbols. This
* allows specific indication of the presence or abscence of
* the bindings libraries, allowing a programmer to use the
* GEMFAST.H header without using the rest of GemFast. This
* also allows conditional compilation code to be more
* specific: it can now test for the presence of the header
* file (and handle the differences in the structure defs),
* and it can separately test for the presence of the libs,
* and the extended functions available therein.
*************************************************************************/
#ifndef GEMFAST_H /* Prevent multiple inclusion */
#define GEMFAST_H 1 /* Tell the world GEMFAST header is used */
#define GEMF_VERSION 0x0141 /* Tell the world we are v1.41 */
#define AESUTIL_A 1 /* Tell the world AESFAST utils available */
#define AESFAST_A 1 /* Tell the world AESFAST lib is available */
#define VDIFAST_A 1 /* Tell the world VDIFAST lib is available */
/* VDI inside fill styles - new names */
#define VIS_HOLLOW 0 /* these names will be phased out soon... */
#define VIS_SOLID 1
#define VIS_PATTERN 2
#define VIS_HATCH 3
#define VIS_UDPTRN 4
/* VDI inside fill patterns - new names */
#define VIP_HOLLOW 0 /* these names will be phased out soon... */
#define VIP_1PTRN 1
#define VIP_2PTRN 2
#define VIP_3PTRN 3
#define VIP_4PTRN 4
#define VIP_5PTRN 5
#define VIP_6PTRN 6
#define VIP_SOLID 7
/* VDI inside fill patterns */
#define IS_HOLLOW 0
#define IS_SOLID 1
#define IS_PATTERN 2
#define IS_HATCH 3
#define IS_UDPTRN 4
/* VDI inside fill patterns */
#define IP_HOLLOW 0
#define IP_1PTRN 1
#define IP_2PTRN 2
#define IP_3PTRN 3
#define IP_4PTRN 4
#define IP_5PTRN 5
#define IP_6PTRN 6
#define IP_SOLID 7
/* VDI normal graphics drawing modes */
#define MD_REPLACE 1
#define MD_TRANS 2
#define MD_XOR 3
#define MD_ERASE 4
/* VDI bit blt rules */
#define ALL_WHITE 0
#define S_AND_D 1
#define S_AND_NOTD 2
#define S_ONLY 3
#define NOTS_AND_D 4
#define D_ONLY 5
#define S_XOR_D 6
#define S_OR_D 7
#define NOT_SORD 8
#define NOT_SXORD 9
#define D_INVERT 10
#define NOT_D 10
#define S_OR_NOTD 11
#define NOT_S 12
#define NOTS_OR_D 13
#define NOT_SANDD 14
#define ALL_BLACK 15
/* font types */
#define IBM 3
#define SMALL 5
/* evnt_multi flags */
#define MU_KEYBD 0x0001
#define MU_BUTTON 0x0002
#define MU_M1 0x0004
#define MU_M2 0x0008
#define MU_MESAG 0x0010
#define MU_TIMER 0x0020
/* evnt_mouse flags */
#define MU_MENTRY 0x0000
#define MU_MEXIT 0x0001
/* keyboard states */
#define K_RSHIFT 0x0001
#define K_LSHIFT 0x0002
#define K_CTRL 0x0004
#define K_ALT 0x0008
/* event message values */
#define MN_SELECTED 10
#define WM_REDRAW 20
#define WM_TOPPED 21
#define WM_CLOSED 22
#define WM_FULLED 23
#define WM_ARROWED 24
#define WM_HSLID 25
#define WM_VSLID 26
#define WM_SIZED 27
#define WM_MOVED 28
#define WM_NEWTOP 29
#define AC_OPEN 40
#define AC_CLOSE 41
/* form_dial opcodes */
#define FMD_START 0
#define FMD_GROW 1
#define FMD_SHRINK 2
#define FMD_FINISH 3
/* rsrc_gaddr structure types */
#define ROOT 0 /* this name used by MWC */
#define R_TREE 0
#define R_OBJECT 1
#define R_TEDINFO 2
#define R_ICONBLK 3
#define R_BITBLK 4
#define R_STRING 5
#define R_IMAGEDATA 6
#define R_OBSPEC 7
#define R_TEPTEXT 8
#define R_TEPTMPLT 9
#define R_TEPVALID 10
#define R_IBPMASK 11
#define R_IBPDATA 12
#define R_IBPTEXT 13
#define R_BIPDATA 14
#define R_FRSTR 15
#define R_FRIMG 16
/* Window Attributes */
#define NAME 0x0001
#define CLOSER 0x0002
#define FULLER 0x0004
#define MOVER 0x0008
#define INFO 0x0010
#define SIZER 0x0020
#define UPARROW 0x0040
#define DNARROW 0x0080
#define VSLIDE 0x0100
#define LFARROW 0x0200
#define RTARROW 0x0400
#define HSLIDE 0x0800
/* wind_calc flags */
#define WC_BORDER 0
#define WC_WORK 1
/* wind_get flags */
#define WF_KIND 1
#define WF_NAME 2
#define WF_INFO 3
#define WF_WORKXYWH 4
#define WF_CURRXYWH 5
#define WF_PREVXYWH 6
#define WF_FULLXYWH 7
#define WF_HSLIDE 8
#define WF_VSLIDE 9
#define WF_TOP 10
#define WF_FIRSTXYWH 11
#define WF_NEXTXYWH 12
#define WF_RESVD 13
#define WF_NEWDESK 14
#define WF_HSLSIZE 15
#define WF_VSLSIZE 16
#define WF_SCREEN 17
/* wind_update flags */
#define END_UPDATE 0
#define BEG_UPDATE 1
#define END_MCTRL 2
#define BEG_MCTRL 3
/* graf_mouse mouse types*/
#define ARROW 0
#define TEXT_CRSR 1
#define HOURGLASS 2 /* this name used by MWC (why?) */
#define BUSY_BEE 2
#define BEE 2
#define POINT_HAND 3
#define FLAT_HAND 4
#define THIN_CROSS 5
#define THICK_CROSS 6
#define OUTLN_CROSS 7
#define USER_DEF 255
#define M_OFF 256
#define M_ON 257
/* max depth of search or draw */
#define MAX_DEPTH 8
/* value returned by objc_find(), et. al. */
#define NO_OBJECT -1
/* object types */
#define G_BOX 20
#define G_TEXT 21
#define G_BOXTEXT 22
#define G_IMAGE 23
#define G_USERDEF 24
#define G_PROGDEF 24
#define G_IBOX 25
#define G_BUTTON 26
#define G_BOXCHAR 27
#define G_STRING 28
#define G_FTEXT 29
#define G_FBOXTEXT 30
#define G_ICON 31
#define G_TITLE 32
/* object flags */
#define NONE 0x0000
#define SELECTABLE 0x0001
#define DEFAULT 0x0002
#define EXIT 0x0004
#define EDITABLE 0x0008
#define RBUTTON 0x0010
#define LASTOB 0x0020
#define TOUCHEXIT 0x0040
#define HIDETREE 0x0080
#define INDIRECT 0x0100
/* Object states */
#define NORMAL 0x0000
#define SELECTED 0x0001
#define CROSSED 0x0002
#define CHECKED 0x0004
#define DISABLED 0x0008
#define OUTLINED 0x0010
#define SHADOWED 0x0020
/* Object colors */
#define WHITE 0
#define BLACK 1
#define RED 2
#define GREEN 3
#define BLUE 4
#define CYAN 5
#define YELLOW 6
#define MAGENTA 7
#define LWHITE 8
#define LBLACK 9
#define LRED 10
#define LGREEN 11
#define LBLUE 12
#define LCYAN 13
#define LYELLOW 14
#define LMAGENTA 15
/* editable text field definitions */
#define EDSTART 0
#define EDINIT 1
#define EDCHAR 2
#define EDEND 3
/* editable text justification */
#define TE_LEFT 0
#define TE_RIGHT 1
#define TE_CNTR 2
/* VDI Memory Form Definition Block */
#ifndef FDADDR /* v1.3: this typedef has been added to */
typedef char *FDADDR; /* help provide compatibility between */
#endif /* bindings systems. */
typedef struct fdbstr {
FDADDR fd_addr;
int fd_w;
int fd_h;
int fd_wdwidth;
int fd_stand;
int fd_nplanes;
int fd_r1;
int fd_r2;
int fd_r3;
} FDB;
#define MFDB FDB /* MFDB added for Laser compatibily */
/* Mouse Form Definition Block */
typedef struct mfstr {
int mf_xhot;
int mf_yhot;
int mf_nplanes;
int mf_fg;
int mf_bg;
int mf_mask[16];
int mf_data[16];
} MFORM ;
typedef struct object {
int ob_next; /* -> object's next sibling */
int ob_head; /* -> head of object's children */
int ob_tail; /* -> tail of object's children */
unsigned int ob_type; /* type of object */
unsigned int ob_flags; /* flags */
unsigned int ob_state; /* state */
long ob_spec; /* whatever... */
int ob_x; /* upper left corner of object */
int ob_y; /* upper left corner of object */
int ob_width; /* width of obj */
int ob_height; /* height of obj */
} OBJECT;
typedef struct grect {
int g_x;
int g_y;
int g_w;
int g_h;
} GRECT;
typedef struct vrect {
int v_x1;
int v_y1;
int v_x2;
int v_y2;
} VRECT;
typedef struct text_edinfo {
char *te_ptext; /* ptr to text */
char *te_ptmplt; /* ptr to template */
char *te_pvalid; /* ptr to validation chrs. */
int te_font; /* font */
int te_junk1; /* junk word */
int te_just; /* justification */
int te_color; /* color information word */
int te_junk2; /* junk word */
int te_thickness; /* border thickness */
int te_txtlen; /* length of text string */
int te_tmplen; /* length of template string */
} TEDINFO;
typedef struct icon_block {
int *ib_pmask;
int *ib_pdata;
char *ib_ptext;
int ib_char;
int ib_xchar;
int ib_ychar;
int ib_xicon;
int ib_yicon;
int ib_wicon;
int ib_hicon;
int ib_xtext;
int ib_ytext;
int ib_wtext;
int ib_htext;
} ICONBLK;
typedef struct bit_block {
int *bi_pdata; /* ptr to bit forms data */
int bi_wb; /* width of form in bytes */
int bi_hl; /* height in lines */
int bi_x; /* source x in bit form */
int bi_y; /* source y in bit form */
int bi_color; /* fg color of blt */
} BITBLK;
typedef struct user_blk {
long (*ub_code)();
long ub_parm;
} USERBLK;
#define appl_blk user_blk
#define APPLBLK USERBLK
typedef struct parm_blk {
OBJECT *pb_tree;
int pb_obj;
int pb_prevstate;
int pb_currstate;
int pb_x, pb_y, pb_w, pb_h;
int pb_xc, pb_yc, pb_wc, pb_hc;
long pb_parm;
} PARMBLK;
/*-------------------------------------------------------------------------
* RSHDR structure...
*-----------------------------------------------------------------------*/
typedef struct rshdr {
int rsh_vrsn; /* Resource structure version # */
unsigned int rsh_object; /* Offset to first object */
unsigned int rsh_tedinfo; /* Offset to first tedinfo */
unsigned int rsh_iconblk; /* Offset to first iconblk */
unsigned int rsh_bitblk; /* Offset to first bitblk */
unsigned int rsh_frstr; /* Offset to free string index */
unsigned int rsh_string; /* Offset to string data */
unsigned int rsh_imdata; /* Offset to image data */
unsigned int rsh_frimg; /* Offset to free image index */
unsigned int rsh_trindex; /* Offset to tree index */
unsigned int rsh_nobs; /* Number of objects */
unsigned int rsh_ntree; /* Number object trees */
unsigned int rsh_nted; /* Number of tedinfo structs */
unsigned int rsh_nib; /* Number of iconblk structs */
unsigned int rsh_nbb; /* Number of bitblk structs */
unsigned int rsh_nstring; /* Number of free strings */
unsigned int rsh_nimages; /* Number of free images */
unsigned int rsh_rssize; /* total bytes in resource */
} RSHDR;
#define RSHDR_DEFINED 1 /* signal to other header files that RSHDR is done */
/* ignore following structures, they're being set up for GEMFAST v2.0 - Ian */
typedef struct xmouse {
int retval;
int bclicks;
int mask;
int state;
int status;
int mousex;
int mousey;
int mouseb;
int keystate;
} XMOUSE;
typedef struct xmulti {
int msgbuf[8];
int mflags,
mbclicks,
mbmask,
mbstate,
mm1flags;
GRECT mm1rect;
int mm2flags;
GRECT mm2rect;
int mtlocount,
mthicount;
int mwhich,
mmox,
mmoy,
mmobutton,
mmokstate,
mkreturn,
mbreturn;
} XMULTI;
/**************************************************************************
*
* Name compatibility stuff.
*
* 05/26/90 - v1.4
* Added mapping of find_exttype to obj_xtfind.
* 08/28/89 - v1.3
* In v1.3, a big push has been made to make a consistant
* naming standard for the AES utilities. To avoid breaking
* a lot of existing code, the following block will direct
* the old names to the new routines.
*
*************************************************************************/
#define objclg_adjust rc_gadjust
#define objclv_adjust rc_vadjust
#define objrb_which(a,b) obj_rbfind((a),(b),SELECTED)
#define obj_rbwhich(a,b) obj_rbfind((a),(b),SELECTED)
#define objxrb_which obj_rbfind
#define objc_xywh obj_xywh
#define find_exttype obj_xtfind
#define objst_change obj_stchange
#define objfl_change obj_flchange
#define graqon_mouse gra_qonmouse
#define graqof_mouse gra_qofmouse
#define graq_mstate gra_qmstate
#endif
/* end of GEMFAST.H */